package com.study.controller;

import com.study.pojo.User;
import com.study.service.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController  //@ResponseBody 将list集合转化为json
@CrossOrigin
public class UserController {

    @Autowired
    private UserService userService;

    /**
     * URL: http://localhost:8090/findAll
     * 参数: 无
     * 返回值: List<User>
     */
    @RequestMapping("/findAll")
    public List<User> findAll(){

        return userService.findAll();
    }

    @RequestMapping("/findUserById")
    public User findUserById(Integer id){
        return userService.findUserById(id);
    }

    /**
     *URL:http://localhost:8090/findUserByAs?age=18&sex=女
     * 参数：age=18/sex=女
     * 返回值：List<集合>
     * 参数的接收：如果是多个参数，并且与属性名称一致，可以使用对象接收
     */
    @RequestMapping("/findUserByAs")
    public List<User> findUserByAs(User user){
        return userService.findUserByAs(user);
    }

    /**
     *URL:http://localhost:8090/updateById?1/黑熊精/3000/男
     * 参数：4个
     * 返回值：修改成功
     * restFul结构 参数分析 {属性名称}
     * 参数接收：
     *      1：单个参数使用@PathVariable Integer id接收
     *      2：多个参数接收 使用对象mvc自动提供的功能
     */
    //@RequestMapping("/updateById/{id}/{name}/{age}/{sex}")
    //@RequestMapping(value = "/updateById/{id}/{name}/{age}/{sex}",method = RequestMethod.PUT)
    @PutMapping("updateById/{id}/{name}/{age}/{sex}")
    public String updateById(User user){
        userService.updateById(user);
        return "用户修改成功";
    }

    /**
     *URL:http://localhost:8090/findUserByLike?name=乔
     * 参数：乔
     * 返回值： 返回list集合
     * restFul结构 参数分析 {属性名称}
     */
    @RequestMapping("/findUserByLike")
    public List<User> findUserByLike(String name){
        return userService.findUserByLike(name);
    }

    /**
     * 批量查询
     * http://localhost:8090/findUserByIds?ids=1,3,5,7
     * 返回list集合
     * 参数：ids=1,3,5,7
     * 返回值：List<User>
     * 知识点：MVC中参数，号分割的规则，应该使用数组接收mvc的规则
     * */
    @RequestMapping("/findUserByIds")
    public List<User> findUserByIds(Integer[] ids){
        return userService.findUserByIds(ids);
    }

    /**
     *实现用户新增
     * http://localhost:8090/saveUser/悟空/8000/男
     * 返回成功的提示即可
     * 返回值：String
     * */
    @RequestMapping("/saveUser/{name}/{age}/{sex}")
    public String saveUser (User user){
        userService.saveUser(user);
        return "新增入库成功";
    }
}